package com.oldterns.vilebot.handlers.user;
import ca.szc.keratin.bot.annotation.HandlerContainer;
import ca.szc.keratin.core.event.message.recieve.ReceivePrivmsg;
import net.engio.mbassy.listener.Handler;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.net.URL;
import java.net.URLConnection;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Created by eunderhi on 27/10/15.
*/
@HandlerContainer
public class Ttc {
private static final Pattern TTC_PATTERN = Pattern.compile("^!ttc$");
public static final String TTC_URL = "https://www.ttc.ca/Service_Advisories/all_service_alerts.jsp";
@Handler
public void getInfo(ReceivePrivmsg event) {
String text = event.getText();
Matcher match = TTC_PATTERN.matcher(text);
if (match.matches()) {
printAlerts(event);
}
}
private void printAlerts(ReceivePrivmsg event) {
try {
for(Element element : parseContent(getContent())) {
event.reply(element.text());
}
}
catch(Exception e) {
event.reply("Unable to retrieve alerts.");
}
}
private Elements parseContent(String content) throws Exception {
Elements alerts = new Elements();
Document doc = Jsoup.parse(content);
Elements alertDivs = doc.select("div[class=alert-content]");
for(Element element : alertDivs) {
if(!element.text().toLowerCase().contains("elevator")) {
alerts.addAll(element.select("p[class=veh-replace]"));
}
}
return alerts;
}
private String getContent() throws Exception {
String content;
URLConnection connection;
connection = new URL(TTC_URL).openConnection();
connection.addRequestProperty(
"User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
);
Scanner scanner = new Scanner(connection.getInputStream());
scanner.useDelimiter("\\Z");
content = scanner.next();
return content;
}
}